package partner_commerce_api

import (
	"gitee.com/theegg/go-brick/app/model/commerce/goods_set"
	"gitee.com/theegg/go-brick/app/service/app"
	"gitee.com/theegg/go-brick/app/service/help/cstruct"
	"github.com/gin-gonic/gin"
)

// @title GetGoodsSetList
// @description 获取商品集合列表
func GetGoodsSetList(c *gin.Context) {
	// 检验参数
	var validaParams goods_set.QueryParams
	if err := c.ShouldBind(&validaParams); err != nil {
		app.NewResponse(c).JsonReturn(false, err.Error(), nil)
		return
	}

	// 查询数据
	data, err := goods_set.GetDataList(cstruct.StructToMap(validaParams))
	if err != nil {
		app.NewResponse(c).JsonReturn(false, err.Error(), data)
		return
	}

	app.NewResponse(c).JsonReturn(true, "获取数据成功", data)
	return
}

// @title GetGoodsSetDetailList
// @description 获取商品集合详情
func GetGoodsSetDetailList(c *gin.Context) {

	app.NewResponse(c).JsonReturn(true, "获取数据成功", nil)
	return
}

// @title NodeAdd
// @description 添加节点
func GoodsSetAdd(c *gin.Context) {
	app.NewResponse(c).JsonReturn(true, "获取数据成功", nil)
	return
}

// @title NodeStatus
// @description 修改node状态
func GoodsSetStatus(c *gin.Context) {
	node, err := getTargetGoodsFromParams(c)
	if err != nil {
		app.NewResponse(c).JsonReturn(false, err.Error(), nil)
		return
	}

	// 动作
	action := c.PostForm("action")
	if action != "publish" && action != "un_publish" {
		action = "publish"
	}

	if action == "publish" {
		errPublish := node.Publish()
		if errPublish != nil {
			app.NewResponse(c).JsonReturn(false, errPublish.Error(), nil)
			return
		}

		app.NewResponse(c).JsonReturn(true, "恭喜, 上架成功", nil)
		return
	}

	if action == "un_publish" {
		errUnPublish := node.UnPublish()
		if errUnPublish != nil {
			app.NewResponse(c).JsonReturn(false, errUnPublish.Error(), nil)
			return
		}

		app.NewResponse(c).JsonReturn(true, "恭喜, 下架成功", nil)
		return
	}
}

// @title NodeDel
// @description 删除node
func GoodsSetDel(c *gin.Context) {
	node, err := getTargetGoodsFromParams(c)
	if err != nil {
		app.NewResponse(c).JsonReturn(false, err.Error(), nil)
		return
	}

	// 删除
	errDel := node.DeleteItem()
	if errDel != nil {
		app.NewResponse(c).JsonReturn(false, errDel.Error(), nil)
		return
	}

	app.NewResponse(c).JsonReturn(true, "删除内容数据成功", nil)
	return
}

/** =========================== 辅助查询 ============================ **/
